package com.ningxun.rms.signup.mapper;

import java.util.List;
import com.ningxun.rms.signup.domain.BusSignup;
import com.ningxun.rms.signup.domain.vo.BusSignupWithRequireVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 报名信息Mapper接口
 *
 * @author rms
 * @date 2025-07-15
 */
@Mapper
public interface BusSignupMapper
{
    /**
     * 查询报名信息
     *
     * @param signupId 报名信息主键
     * @return 报名信息
     */
    public BusSignup selectBusSignupBySignupId(Long signupId);



    /**
     * 查询报名信息列表
     *
     * @param busSignup 报名信息
     * @return 报名信息集合
     */
    public List<BusSignup> selectBusSignupList(BusSignup busSignup);

    @Select("select * from bus_signup where user_id = #{userId}")
    public List<BusSignup> selectBusSignupByUserId(Long userId);
    /**
     * 新增报名信息
     *
     * @param busSignup 报名信息
     * @return 结果
     */
    public int insertBusSignup(BusSignup busSignup);

    /**
     * 修改报名信息
     *
     * @param busSignup 报名信息
     * @return 结果
     */
    public int updateBusSignup(BusSignup busSignup);

    /**
     * 删除报名信息
     *
     * @param signupId 报名信息主键
     * @return 结果
     */
    public int deleteBusSignupBySignupId(Long signupId);

    /**
     * 批量删除报名信息
     *
     * @param signupIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteBusSignupBySignupIds(Long[] signupIds);

    BusSignup selectSignupLatelyByUserId(Long userId);
    /**
     * 根据requireIds查询报名信息
     * @param requireIds
     * @return
     */
    public List<BusSignup> selectBusSignupByRequireIds(@Param("requireIds") Long[] requireIds);

    /**
     * 根据requireId查询报名信息
     * @param requireId
     * @return
     */
    public BusSignup selectBusSignupByRequireId(Long requireId);
    /**
     * 查询报名信息与需求信息联查列表
     *
     * @param busSignup 报名信息
     * @return 报名信息与需求信息联查集合
     */
    public List<BusSignupWithRequireVO> selectSignupWithRequireList(BusSignup busSignup);
}
